บันทึกการจัดสรรแบบเนทีฟ

หากคุณเขียนโค้ดเนทีฟและกังวลเกี่ยวกับการใช้หน่วยความจำของโค้ดดังกล่าว คุณควรตรวจสอบการจัดสรรเนทีฟของแอปเพื่อดูว่ามีวิธีเพิ่มประสิทธิภาพหรือไม่

เหตุผลที่ควรวิเคราะห์หน่วยความจำของแอป

Android มีสภาพแวดล้อมหน่วยความจำที่มีการจัดการ เมื่อ Android พิจารณาแล้วว่าแอปของคุณไม่ได้ใช้ออบเจ็กต์บางรายการแล้ว ตัวเก็บขยะจะปล่อยหน่วยความจำที่ไม่ได้ใช้กลับไปยังกอง Android ปรับปรุงวิธีค้นหาหน่วยความจำที่ไม่ได้ใช้อยู่อย่างต่อเนื่อง แต่บางครั้งใน Android ทุกเวอร์ชัน ระบบจะต้องหยุดโค้ดของคุณชั่วคราว ส่วนใหญ่แล้ว คุณจะไม่เห็นการหยุดชั่วคราว อย่างไรก็ตาม หากแอปของคุณจัดสรรหน่วยความจำเร็วกว่าที่ระบบจะรวบรวมได้ แอปอาจทำงานล่าช้าขณะที่เครื่องมือรวบรวมหน่วยความจำเพิ่มพื้นที่หน่วยความจำให้เพียงพอสำหรับการจัดสรรของคุณ ความล่าช้าอาจทําให้แอปข้ามเฟรมและทําให้แอปทำงานช้าอย่างเห็นได้ชัด

ดูข้อมูลเกี่ยวกับแนวทางปฏิบัติด้านการเขียนโปรแกรมที่สามารถลดการใช้หน่วยความจำของแอปได้ที่จัดการหน่วยความจำของแอป

ภาพรวมการจัดสรรเนทีฟ

เมื่อคุณเรียกใช้งานติดตามการใช้หน่วยความจำ (การจัดสรรแบบเนทีฟ) เครื่องมือวิเคราะห์ Android Studio จะติดตามการจัดสรรและการเลิกจัดสรรออบเจ็กต์ในโค้ดเนทีฟตามระยะเวลาที่คุณระบุ และแสดงข้อมูลต่อไปนี้

  • การจัดสรร: จํานวนออบเจ็กต์ที่จัดสรรโดยใช้ malloc() หรือโอเปอเรเตอร์ new ในช่วงระยะเวลาที่เลือก
  • Deallocations: จํานวนออบเจ็กต์ที่ยกเลิกการจัดสรรโดยใช้ free() หรือโอเปอเรเตอร์ delete ในช่วงระยะเวลาที่เลือก
  • ขนาดการกําหนด: ขนาดรวมในไบต์ของการกําหนดทั้งหมดในระยะเวลาที่เลือก
  • Deallocations Size: ขนาดรวมในหน่วยไบต์ของหน่วยความจําทั้งหมดที่ปลดปล่อยระหว่างระยะเวลาที่เลือก
  • จํานวนทั้งหมด: ค่าในคอลัมน์การจัดสรรลบด้วยค่าในคอลัมน์Deallocations
  • ขนาดที่เหลือ: ค่าในคอลัมน์ขนาดการจัดสรรลบด้วยค่าในคอลัมน์ขนาดการจอง

แท็บการแสดงภาพจะแสดงมุมมองแบบรวมของออบเจ็กต์ทั้งหมดที่เกี่ยวข้องกับโค้ดเนทีฟในกองคําเรียกในช่วงเวลาที่เลือก โดยข้อมูลนี้แสดงหน่วยความจําทั้งหมดที่ใช้ในการเรียกใช้สแต็กที่มีอินสแตนซ์ที่แสดง แถวแรกแสดงชื่อชุดข้อความ โดยค่าเริ่มต้น ระบบจะวางซ้อนวัตถุจากซ้ายไปขวาตามขนาดการจัดสรร ให้ใช้เมนูแบบเลื่อนลงเพื่อเปลี่ยนลําดับ

โดยค่าเริ่มต้น เครื่องมือวิเคราะห์จะใช้ขนาดตัวอย่าง 2048 ไบต์: ระบบจะจับภาพหน่วยความจำทุกครั้งที่มีการจองหน่วยความจำ 2048 ไบต์ การเก็บตัวอย่างน้อยลงส่งผลให้มีการจับภาพบ่อยขึ้น ซึ่งจะให้ข้อมูลที่แม่นยำมากขึ้นเกี่ยวกับการใช้หน่วยความจำ การเก็บตัวอย่างจำนวนมากขึ้นจะให้ข้อมูลที่แม่นยำน้อยลง แต่จะใช้ทรัพยากรของระบบน้อยลงและปรับปรุงประสิทธิภาพขณะบันทึก หากต้องการเปลี่ยนขนาดตัวอย่าง โปรดดูแก้ไขการกำหนดค่าการบันทึก